home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / quicspool / wwfonts / tromlig.mf < prev    next >
Text File  |  1990-10-01  |  8KB  |  172 lines

  1. % $Header: tromlig.mf,v 1.1 88/01/15 13:15:24 simpson Rel $
  2. % $Log:    tromlig.mf,v $
  3. %Revision 1.1  88/01/15  13:15:24  simpson
  4. %initial release
  5. %
  6. %Revision 0.1  87/12/11  19:01:43  simpson
  7. %beta test
  8. %
  9. % This file describes five roman ligatures that begin with `f'
  10. % and puts them in code positions \001-\003, \011-\012
  11.  
  12. numeric itc#; % modified italic correction on `f' and `ff'
  13. itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi;
  14.  
  15. ligtable "f": "i"=:oct"001", "f"=:oct"003", "l"=:oct"002",
  16.  "?" kern itc#, "!" kern itc#, ")" kern itc#, "]" kern itc#;
  17. ligtable oct"003": "i"=:oct"011", "l"=:oct"012",
  18.  "?" kern itc#, "!" kern itc#, ")" kern itc#, "]" kern itc#;
  19.  
  20. cmchar "The ligature ff";
  21. beginchar(oct"003",10.5u#+2letter_fit#,asc_height#,0);
  22. italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi;
  23. adjust_fit(0,0);
  24. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  25. pos11(stem',0); rt x11r=hround(w-3u+.5stem');
  26. pickup fine.nib; numeric bulb_diam, inner_jut;
  27. if serifs: bulb_diam=hround .8[stem,flare];
  28.  pos2(bulb_diam,0); pos12(bulb_diam,0);
  29.  rt x2r=hround(rt x11r-stem_corr); lft x12l=hround(w-.75u+.5);
  30.  y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
  31.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  32.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  33. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 6.25u;
  34.  pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(w+.75u); fi
  35. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  36. f_stroke(11,12,d,e,f,inner_jut,1.25jut); % right stem, arc, terminal, serif
  37. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  38. pos3(bar,90); pos4(bar,90);
  39. rt x4=hround(w-1/3u);
  40. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  41.  pos4'(bar,90); x4'=x11; y4'=y4;
  42.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  43. else: filldraw stroke z3e--z4e; fi  % bar
  44. penlabels(1,2,3,4,11,12); endchar;
  45.  
  46. cmchar "The ligature fi";
  47. beginchar(oct"001",10u#+2letter_fit#,asc_height#,0);
  48. italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#;
  49. adjust_fit(0,serif_fit#);
  50. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  51. pos11(stem',0); rt x11r=hround(w-2.5u+.5stem');
  52. pos12(stem',0); x11=x12; bot y12=0;
  53. pickup fine.nib; numeric bulb_diam, inner_jut;
  54. if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size];
  55.  pos2(bulb_diam,0); x2r=x12r;
  56.  y2+.5bulb_diam=.8[x_height,h+oo]; top y11=x_height+min(oo,serif_drop);
  57.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  58.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  59. else: bulb_diam=max(stem,dot_size);
  60.  pos2(6/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
  61.  pickup tiny.nib; pos13(bulb_diam,0); pos14(bulb_diam,90);
  62.  x13=x11-.5; top y14r=min(2x_height,h+1); top y11=x_height;
  63.  if bot y14l-x_height<tiny: y14l:=min(y14r-eps,y11+2tiny); fi
  64.  x13=x14; y13=.5[y14l,y14r]; dot(13,14);  % dot
  65. fi;  % this is the ligature we're drawing
  66. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  67. pickup tiny.nib; filldraw stroke z11e--z12e;  % right stem
  68. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  69. pos3(bar,90); pos4(bar,90);
  70. if serifs: x4=x11;  % bar will overlap upper right serif
  71.  sloped_serif.l(11,12,d,1/3,jut,min(oo,serif_drop));  % upper right serif
  72.  dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut);  % lower right serif
  73. else: rt x4= hround 5.3u; fi
  74. pickup crisp.nib; filldraw stroke z3e--z4e;  % bar
  75. penlabels(1,2,3,4,11,12,13,14); endchar;
  76.  
  77. cmchar "The ligature fl";
  78. beginchar(oct"002",10u#+2letter_fit#,asc_height#,0);
  79. italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
  80. adjust_fit(0,serif_fit#);
  81. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  82. pos11(stem',0); rt x11r=hround(w-2.5u+.5stem');
  83. pos12(stem',0); x11=x12; bot y12=0; top y11=h;
  84. filldraw stroke z11e--z12e;  % right stem
  85. pickup fine.nib; numeric bulb_diam, inner_jut;
  86. if serifs: bulb_diam=hround .8[stem,flare];
  87.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  88.  y2+.5bulb_diam=.9[x_height,h+oo];
  89.  sloped_serif.l(11,12,d,1/3,eps,max(serif_drop,oo)); % erase excess at top
  90.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  91.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  92. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u; fi
  93. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  94. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  95. pos3(bar,90); pos4(bar,90);
  96. if serifs: x4=x11;
  97.  dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut);  % lower right serif
  98. else: rt x4= hround 5.3u; fi
  99. pickup crisp.nib; filldraw stroke z3e--z4e;  % bar
  100. penlabels(1,2,3,4,11,12); endchar;
  101.  
  102. cmchar "The ligature ffi";
  103. beginchar(oct"011",15u#+4letter_fit#,asc_height#,0);
  104. italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#;
  105. adjust_fit(0,serif_fit#);
  106. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  107. pos11(stem',0); lft x11l=hround(.5w-.5stem');
  108. pos21(stem',0); rt x21r=hround(w-2.5u+.5stem');
  109. pos22(stem',0); x21=x22; bot y22=0;
  110. pickup fine.nib; numeric bulb_diam, inner_jut;
  111. if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size];
  112.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  113.  pos12(bulb_diam,0); x12r=x21r;
  114.  top y21=x_height+min(oo,serif_drop);
  115.  y2+.5bulb_diam=.8[x_height,h+oo]; y12=y2;
  116.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  117.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  118. else: bulb_diam=max(stem,dot_size);
  119.  pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
  120.  pos12(6/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u);
  121.  pickup tiny.nib; pos23(bulb_diam,0); pos24(bulb_diam,90);
  122.  x23=x21-.5; top y24r=min(2x_height,h+1); top y21=x_height;
  123.  if bot y24l-x_height<tiny: y24l:=min(y24r-eps,y21+2tiny); fi
  124.  x23=x24; y23=.5[y24l,y24r]; dot(23,24); fi  % dot
  125. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  126. f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
  127. pickup tiny.nib; filldraw stroke z21e--z22e;  % right stem
  128. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
  129. pos3(bar,90); pos4(bar,90);
  130. if serifs: x4=x21;  % bar will overlap upper right serif
  131.  sloped_serif.l(21,22,g,1/3,jut,min(oo,serif_drop));  % upper right serif
  132.  dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut);  % lower right serif
  133. else: rt x4=hround(.5w+2.8u); fi
  134. pickup crisp.nib;
  135. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  136.  pos4'(bar,90); x4'=x11; y4'=y4;
  137.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  138. else: filldraw stroke z3e--z4e; fi  % bar
  139. penlabels(1,2,3,4,11,12,21,22,23,24); endchar;
  140.  
  141. cmchar "The ligature ffl";
  142. beginchar(oct"012",15u#+4letter_fit#,asc_height#,0);
  143. italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
  144. adjust_fit(0,serif_fit#);
  145. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  146. pos11(stem',0); lft x11l=hround(.5w-.5stem');
  147. pos21(stem',0); rt x21r=hround(w-2.5u+.5stem');
  148. pos22(stem',0); x21=x22; bot y22=0; top y21=h;
  149. filldraw stroke z21e--z22e;  % right stem
  150. pickup fine.nib; numeric bulb_diam, inner_jut;
  151. if serifs: bulb_diam=hround .8[stem,flare];
  152.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  153.  pos12(bulb_diam,0); x12r=x21r-stem_corr;
  154.  y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
  155.  sloped_serif.l(21,22,g,1/3,eps,max(serif_drop,oo)); % erase excess at top
  156.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  157.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  158. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
  159.  pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); fi
  160. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  161. f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
  162. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
  163. pos3(bar,90); pos4(bar,90);
  164. if serifs: dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut);  % lower right serif
  165.  pickup crisp.nib; x4=x21;
  166. else: rt x4=hround(.5w+2.8u); fi
  167. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  168.  pos4'(bar,90); x4'=x11; y4'=y4;
  169.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  170. else: filldraw stroke z3e--z4e; fi  % bar
  171. penlabels(1,2,3,4,11,12,21,22); endchar;
  172.